from langchain.tools import tool
import os
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
from langchain_classic.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.messages import HumanMessage, AIMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

# 加载.env文件
load_dotenv()

# 函数名为add_tool，但工具名通过@tool装饰器自定义为money_add_tool
@tool('money_add_tool') # 定义工具名称为money_add_tool
def add_tool(num1: float, num2: float) -> str:
    """
    用于执行两个数字的加法运算。
    当用户需要计算“A加B”“A加上B”“A与B的和”“A和B相加”等场景时使用。

    Args:
        num1: 加法运算中的第一个数字（整数或小数均可）
        num2: 加法运算中的第二个数字（整数或小数均可）
    """
    result = num1 + num2
    return f"加法运算结果：{num1} + {num2} = {result}"

# 查看工具名称（验证是否定义成功）
# print(f"工具名称：{add_tool.name}") # 工具名称：money_add_tool
# print(f"工具描述：{add_tool.description}")


@tool('money_subtract_tool',description="用于执行两个数字的减法运算。")
def subtract_tool(num1: float, num2: float) -> str:
    """
    用于执行两个数字的减法运算。
    当用户需要计算“A减B”“A减去B”“A与B的差”“A比B多多少”“A减去B等于多少”等场景时使用。

    Args:
        num1: 减法运算中的被减数（整数或小数均可）
        num2: 减法运算中的减数（整数或小数均可）
    """
    result = num1 - num2
    return f"减法运算结果：{num1} - {num2} = {result}"
print(f"工具名称：{subtract_tool.name}") # 工具名称：money_subtract_tool
print(f"工具描述：{subtract_tool.description}") # 工具描述：用于执行两个数字的减法运算。